package com.edu.exam.enums.examination.paper;

/**
 * 题目类型枚举
 *
 * 从OmrAnswerDetail实体类中提取的独立枚举
 *
 * @author System
 * @version 1.0.0
 */
public enum QuestionType {
    SINGLE_CHOICE("单选题"),
    MULTIPLE_CHOICE("多选题"),
    TRUE_FALSE("判断题"),
    FILL_BLANK("填空题"),
    SHORT_ANSWER("简答题"),
    ESSAY("论述题"),
    MATCHING("匹配题"),
    SEQUENCE("排序题"),
    CLASSIFICATION("分类题"),
    NUMERIC("数字题"),
    CALCULATION("计算题"),
    DIAGRAM("图表题"),
    TABLE("表格题"),
    FORMULA("公式题"),
    PROGRAMMING("编程题"),
    DRAWING("绘图题"),
    AUDIO("音频题"),
    VIDEO("视频题"),
    IMAGE("图像题"),
    DRAG_DROP("拖拽题"),
    HOTSPOT("热点题"),
    CLOZE("完形填空题"),
    READING_COMPREHENSION("阅读理解题"),
    LISTENING_COMPREHENSION("听力理解题"),
    LOGICAL_REASONING("逻辑推理题"),
    ANALYTICAL("分析题"),
    SYNTHESIS("综合题"),
    EVALUATION("评价题"),
    APPLICATION("应用题"),
    COMPREHENSIVE("综合题"),
    OPEN_ENDED("开放题"),
    CLOSED_ENDED("封闭题"),
    SUBJECTIVE("主观题"),
    OBJECTIVE("客观题"),
    MIXED("混合题"),
    ADAPTIVE("自适应题"),
    RANDOM("随机题"),
    FIXED("固定题"),
    CONDITIONAL("条件题"),
    BRANCHED("分支题"),
    TIME_LIMITED("限时题"),
    UNTIMED("不限时题"),
    WEIGHTED("加权题"),
    UNWEIGHTED("非加权题"),
    MANDATORY("必答题"),
    OPTIONAL("选答题"),
    BONUS("附加题"),
    PENALTY("惩罚题"),
    PRACTICE("练习题"),
    EXAM("考试题"),
    QUIZ("测验题"),
    SURVEY("调查题"),
    FEEDBACK("反馈题"),
    RATING("评分题"),
    POLL("投票题"),
    QUESTIONNAIRE("问卷题"),
    CHECKLIST("检查表题"),
    RUBRIC("评分标准题"),
    CRITERIA("标准题"),
    SCALE("量表题"),
    RANKING("排序题"),
    PRIORITY("优先级题"),
    DIFFICULTY("难度题"),
    COMPLEXITY("复杂度题"),
    KNOWLEDGE_POINT("知识点题"),
    LEARNING_OBJECTIVE("学习目标题"),
    SKILL("技能题"),
    COMPETENCY("能力题"),
    PERFORMANCE("表现题"),
    ACHIEVEMENT("成就题"),
    PROGRESS("进度题"),
    MILESTONE("里程碑题"),
    BENCHMARK("基准题");

    private final String description;

    QuestionType(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 获取显示名称（中文）
     *
     * @return 中文显示名称
     */
    public String getDisplayName() {
        return description;
    }
}